package org.huawei260.牛客网刷题;

import java.util.LinkedList;

/**
 * @Auther: qingle
 * @Date: 2024/10/24-22:11
 * @Description:给定一个窗口大小和一个整数数据流，根据该滑动窗口的大小，计算滑动窗口里所有数字的平均值。
 *
 * 实现 MovingAverage 类：
 *
 * MovingAverage(int size) 用窗口大小 size 初始化对象。
 * double next(int val) 成员函数 next 每次调用的时候都会往滑动窗口增加一个整数，
 * 请计算并返回数据流中最后 size 个值的移动平均值，即滑动窗口里所有数字的平均值。
 * @version: 1.0
 */
public class LCR041_数据流中的移动平均值 {

	class MovingAverage {
		int size;
		LinkedList<Integer> queue;

		public MovingAverage(int size) {
			this.size = size;
			this.queue = new LinkedList<>();

		}

		public double next(int val) {
			if (queue.size() == size) {
				queue.poll();
			}
			queue.offer(val);
			// 求平均值
			return queue.stream().mapToInt(Integer::intValue).average().getAsDouble();
		}
	}

	public static void main(String[] args) {

		// TODO Auto-generated method stub
		MovingAverage movingAverage = new LCR041_数据流中的移动平均值().new MovingAverage(3);
		System.out.println(movingAverage.next(1));
		System.out.println(movingAverage.next(10));
	}


}
